Django তে Database Migrations ব্যবহার করা হয় ডেটাবেসের স্কিমা পরিবর্তন (যেমন টেবিল তৈরি, মডেল আপডেট বা মুছে ফেলা) ট্র্যাক এবং পরিচালনা করার জন্য। মাইগ্রেশন এর মাধ্যমে আপনি ডেটাবেসের স্ট্রাকচার (টেবিল, ফিল্ড ইত্যাদি) পরিবর্তন করতে পারেন, এবং Django ORM (Object-Relational Mapping) আপনাকে এই পরিবর্তনগুলিকে সহজে ট্র্যাক এবং প্রয়োগ করতে সাহায্য করে।
Database Migrations প্রক্রিয়া
১. Django মডেল তৈরি করা
মাইগ্রেশন শুরু করার আগে, প্রথমে আপনাকে Django মডেল তৈরি করতে হবে। Django মডেলগুলি আপনার ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। একটি সাধারণ মডেল দেখতে এমন হতে পারে:
# models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
এই মডেলটি Post নামক একটি টেবিল তৈরি করবে, যেখানে তিনটি ফিল্ড থাকবে: title, content, এবং created_at।
২. মাইগ্রেশন ফাইল তৈরি করা
মডেল পরিবর্তন করার পর, আপনাকে Django তে মাইগ্রেশন ফাইল তৈরি করতে হবে। এটি আপনার মডেলগুলো এবং ডেটাবেসের মধ্যে একটি সিঙ্ক্রোনাইজেশন তৈরি করবে।
মাইগ্রেশন ফাইল তৈরি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
python manage.py makemigrations
এই কমান্ডটি Django কে বলে দেয় যে আপনার মডেলগুলোর মধ্যে কোনো পরিবর্তন হয়েছে, এবং এটি সেসব পরিবর্তনগুলির জন্য মাইগ্রেশন ফাইল তৈরি করবে।
উদাহরণ:
Migrations for 'myapp':
myapp/migrations/0001_initial.py
- Create model Post
এখানে 0001_initial.py হল মাইগ্রেশন ফাইলের নাম, যা প্রথমবার মডেল তৈরি করার সময় তৈরি হয়েছে।
৩. মাইগ্রেশন প্রয়োগ করা
মাইগ্রেশন ফাইল তৈরি হওয়ার পর, আপনি ডেটাবেসে সেই পরিবর্তনগুলি প্রয়োগ করতে পারেন। মাইগ্রেশন প্রয়োগ করতে এই কমান্ডটি ব্যবহার করুন:
python manage.py migrate
এই কমান্ডটি মাইগ্রেশন ফাইল অনুযায়ী ডেটাবেসে পরিবর্তনগুলো কার্যকর করবে। প্রথমবার যখন আপনি মাইগ্রেশন করবেন, এটি ডেটাবেসে একটি নতুন টেবিল তৈরি করবে (যেমন Post টেবিল)।
মাইগ্রেশন সম্পর্কিত অন্যান্য কমান্ড
১. মাইগ্রেশন স্ট্যাটাস চেক করা
আপনি কোন মাইগ্রেশনগুলো ইতিমধ্যে প্রয়োগ হয়েছে এবং কোনগুলি প্রক্রিয়াধীন রয়েছে তা দেখতে নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:
python manage.py showmigrations
এটি আপনাকে প্রজেক্টের সব অ্যাপ্লিকেশনের মাইগ্রেশন স্ট্যাটাস দেখাবে, যেমন:
myapp
[X] 0001_initial
[ ] 0002_auto_20231201_1530
এখানে [X] নির্দেশ করে যে মাইগ্রেশনটি সফলভাবে প্রয়োগ হয়েছে, এবং [ ] নির্দেশ করে যে এটি এখনও প্রয়োগ হয়নি।
২. নির্দিষ্ট অ্যাপের জন্য মাইগ্রেশন তৈরি করা
আপনি যদি কোনো নির্দিষ্ট অ্যাপের জন্য মাইগ্রেশন তৈরি করতে চান, তবে অ্যাপের নাম উল্লেখ করতে পারেন:
python manage.py makemigrations myapp
এটি শুধুমাত্র myapp অ্যাপের জন্য মাইগ্রেশন ফাইল তৈরি করবে।
৩. মাইগ্রেশন রোলব্যাক করা
যদি আপনি কোনো মাইগ্রেশন ফিরে নিতে চান বা পূর্ববর্তী অবস্থায় ফিরে যেতে চান, তবে migrate কমান্ডের সাহায্যে আপনি নির্দিষ্ট মাইগ্রেশন স্তরে ফিরে যেতে পারেন। উদাহরণস্বরূপ, যদি আপনি 0001 মাইগ্রেশন পর্যন্ত ফিরে যেতে চান:
python manage.py migrate myapp 0001
এটি myapp অ্যাপের 0001 মাইগ্রেশন পর্যন্ত ডেটাবেস রোলব্যাক করবে।
৪. মাইগ্রেশন পুনরায় প্রয়োগ করা (ফোর্স মাইগ্রেশন)
মাইগ্রেশন প্রয়োগ করার সময় যদি কোনো কারণে কিছু ফাইল মিস হয়ে থাকে বা মাইগ্রেশন প্রয়োগে কোনো সমস্যা ঘটে, তবে আপনি --fake বা --fake-initial অপশন দিয়ে মাইগ্রেশন পুনরায় প্রয়োগ করতে পারেন:
python manage.py migrate --fake myapp
এটি মাইগ্রেশন স্ট্যাটাস আপডেট করবে, কিন্তু ডেটাবেসে কোনো পরিবর্তন করবে না।
৫. মাইগ্রেশন ফাইল মুছে ফেলা
যদি কোনো কারণে আপনি মাইগ্রেশন ফাইল মুছে ফেলতে চান (যেমন পরীক্ষা করে বা ডেভেলপমেন্ট পর্যায়ে), তবে ফাইলটি সরিয়ে ফেলে আবার makemigrations কমান্ড চালাতে পারেন।
মাইগ্রেশন এবং ডেটাবেসে পরিবর্তন ট্র্যাক করা
Django তে মাইগ্রেশন ব্যবস্থাপনা এবং ডেটাবেস স্কিমা ট্র্যাকিং খুবই সহজ এবং স্বয়ংক্রিয়। Django ORM মডেলগুলোর পরিবর্তন ট্র্যাক করে এবং মাইগ্রেশন ফাইল তৈরির মাধ্যমে সেগুলো ডেটাবেসে সিঙ্ক্রোনাইজ করে। এর মাধ্যমে, আপনি অ্যাপ্লিকেশনের ডেটাবেস এবং মডেলগুলির মধ্যে সমন্বয় রক্ষা করতে পারেন।
সারাংশ
- Migrations Django তে মডেল এবং ডেটাবেসের মধ্যে সিঙ্ক্রোনাইজেশন তৈরি করে।
makemigrationsকমান্ড মডেল পরিবর্তনের জন্য মাইগ্রেশন ফাইল তৈরি করে।migrateকমান্ড ডেটাবেসে মাইগ্রেশন প্রয়োগ করে।- আপনি মাইগ্রেশন রোলব্যাক বা নির্দিষ্ট মাইগ্রেশন প্রয়োগ করতে পারেন।
Read more